package com.ynet.middleground.contract.bean;

import java.util.List;

import javax.validation.constraints.NotBlank;

import com.ynet.core.common.BaseReqObj;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @author liulx
 * @description 获取意愿地址请求类
 * @date 2020-04-21 23:00
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "获取意愿地址请求信息", description = "用于人脸识别签署，获取意愿地址请求信息")
public class CreateSignAuthReq extends BaseReqObj {

    private static final long serialVersionUID = 701574447355503290L;

    @ApiModelProperty(value = "App 打开协议", notes = "App 打开协议", dataType = "String")
    private String appScheme;

    @ApiModelProperty(value = "用户身份证号码", notes = "用户身份证号码", dataType = "String", required = true)
    @NotBlank(message = "用户身份证号码不能为空")
    private String idNumber;

    @ApiModelProperty(value = "用户手机号", notes = "用户手机号", dataType = "String")
    private String mobile;

    @ApiModelProperty(value = "用户姓名", notes = "用户姓名", dataType = "String", required = true)
    @NotBlank(message = "用户姓名不能为空")
    private String name;

    @ApiModelProperty(value = "开发者回调通知地址", notes = "开发者回调通知地址", dataType = "String")
    private String noticeDeveloperUrl;

    @ApiModelProperty(value = "意愿完成跳转地址", notes = "意愿完成跳转地址", dataType = "String", required = true)
    @NotBlank(message = "意愿完成跳转地址")
    private String redirectUrl;

    @ApiModelProperty(value = "app, 如 app 对接独立意愿，需要传入此参数", notes = "app, 如 app 对接独立意愿，需要传入此参数", dataType = "String")
    private String from;

    @ApiModelProperty(value = "是否需要 pc 端重定向跳转，默认 false。\n" + "true-PC 端意愿认证成功，支持重定向跳转 \n" + "false-PC 端意愿认证成功，不会进行跳转",
        notes = "是否需要 pc 端重定向跳转，默认 false。\n" + "true-PC 端意愿认证成功，支持重定向跳转 \n" + "false-PC 端意愿认证成功，不会进行跳转",
        dataType = "String")
    private String isPCRedirect;

    @ApiModelProperty(
        value = "页面指定意愿认证方式，可指定类型如下：\n" + "CODE_SMS : 短信验证码\n" + "FACE_ZHIMA_XY : 支付宝刷脸\n"
            + "FACE_TECENT_CLOUD_H5 : 腾讯云刷脸\n" + "FACE_FACE_LIVENESS_RECOGNITION : e 签宝刷脸\n"
            + "FACE_WE_CHAT_FACE : 微信小程序刷脸\n" + "\n" + "以下两种方式支持视频双录\n" + "FACE_AUDIO_VIDEO_DUAL : 支付宝智能视频认证\n"
            + "VIDEO_WE_CHAT_VIDEO_DUAL : 微信智能视频认证",
        notes = "页面指定意愿认证方式，可指定类型如下：\n" + "CODE_SMS : 短信验证码\n" + "FACE_ZHIMA_XY : 支付宝刷脸\n"
            + "FACE_TECENT_CLOUD_H5 : 腾讯云刷脸\n" + "FACE_FACE_LIVENESS_RECOGNITION : e 签宝刷脸\n"
            + "FACE_WE_CHAT_FACE : 微信小程序刷脸\n" + "\n" + "以下两种方式支持视频双录\n" + "FACE_AUDIO_VIDEO_DUAL : 支付宝智能视频认证\n"
            + "VIDEO_WE_CHAT_VIDEO_DUAL : 微信智能视频认证")
    private List<String> willTypes;

    @ApiModelProperty(
        value = "页面默认的意愿认证方式，方式类型如下：\n" + "CODE_SMS : 短信验证码\n" + "FACE_ZHIMA_XY : 支付宝刷脸\n"
            + "FACE_TECENT_CLOUD_H5 : 腾讯云刷脸\n" + "FACE_FACE_LIVENESS_RECOGNITION : e 签宝刷脸\n"
            + "FACE_WE_CHAT_FACE : 微信小程序刷脸\n" + "\n" + "以下两种方式支持视频双录\n" + "FACE_AUDIO_VIDEO_DUAL : 支付宝智能视频认证\n"
            + "VIDEO_WE_CHAT_VIDEO_DUAL : 微信智能视频认证",
        notes = "页面默认的意愿认证方式，方式类型如下：\n" + "CODE_SMS : 短信验证码\n" + "FACE_ZHIMA_XY : 支付宝刷脸\n"
            + "FACE_TECENT_CLOUD_H5 : 腾讯云刷脸\n" + "FACE_FACE_LIVENESS_RECOGNITION : e 签宝刷脸\n"
            + "FACE_WE_CHAT_FACE : 微信小程序刷脸\n" + "\n" + "以下两种方式支持视频双录\n" + "FACE_AUDIO_VIDEO_DUAL : 支付宝智能视频认证\n"
            + "VIDEO_WE_CHAT_VIDEO_DUAL : 微信智能视频认证",
        dataType = "String")
    private String willDefaultType;

    @ApiModelProperty(value = "视频双录配置信息", notes = "视频双录配置信息")
    private CreateSignAuthConfig config;

}
